SOQL (Salesforce Object Query Language) Salesforce প্ল্যাটফর্মে ডেটা রিট্রাইভ করার জন্য ব্যবহৃত একটি কুয়েরি ভাষা। এটি নির্দিষ্ট অবজেক্টের নির্দিষ্ট ফিল্ডের উপর ভিত্তি করে ডেটা অনুসন্ধান ও রিট্রাইভ করতে সাহায্য করে। SOQL এর সিনট্যাক্স SQL এর মতো, তবে এটি Salesforce-এর অবজেক্ট ও ফিল্ড কাঠামোর সাথে সামঞ্জস্য রেখে তৈরি করা হয়েছে।
SOQL Syntax
SOQL কুয়েরি লেখার জন্য একটি নির্দিষ্ট সিনট্যাক্স অনুসরণ করতে হয়। সাধারণভাবে, একটি SOQL কুয়েরি নির্দিষ্ট অবজেক্টের কিছু নির্দিষ্ট ফিল্ড এবং শর্ত সাপেক্ষে রেকর্ড রিট্রাইভ করে।
SOQL Syntax:
SELECT fields FROM Object WHERE condition ORDER BY field LIMIT number
SOQL Syntax-এর মূল অংশগুলো
- SELECT: এই অংশে রেকর্ড থেকে যে যে ফিল্ডগুলো রিট্রাইভ করতে চান সেগুলো উল্লেখ করা হয়।
- FROM: যে অবজেক্ট থেকে ডেটা রিট্রাইভ করতে চান তার নাম উল্লেখ করা হয়।
- WHERE (ঐচ্ছিক): শর্ত উল্লেখ করা হয়, যা রেকর্ড ফিল্টার করার জন্য ব্যবহৃত হয়।
- ORDER BY (ঐচ্ছিক): রেকর্ডের মানের ভিত্তিতে সাজানো হয়।
- LIMIT (ঐচ্ছিক): কুয়েরি থেকে রিটার্নকৃত রেকর্ডের সংখ্যা সীমিত করে।
SOQL উদাহরণসমূহ:
বেসিক কুয়েরি: Account অবজেক্ট থেকে Name এবং Industry ফিল্ড রিট্রাইভ করা:
SELECT Name, Industry FROM Account
WHERE কন্ডিশন: Account অবজেক্ট থেকে Industry যদি Technology হয় সেই রেকর্ডগুলো রিট্রাইভ করা:
SELECT Name FROM Account WHERE Industry = 'Technology'
ORDER BY ব্যবহার: Account অবজেক্ট থেকে রেকর্ডগুলো নামের ক্রমানুসারে সাজানো:
SELECT Name FROM Account ORDER BY Name
LIMIT ব্যবহার: কেবলমাত্র প্রথম পাঁচটি রেকর্ড রিট্রাইভ করা:
SELECT Name FROM Account LIMIT 5
Parent-to-Child Relationship: Account থেকে সম্পর্কিত Contact রেকর্ড রিট্রাইভ করা:
SELECT Name, (SELECT LastName FROM Contacts) FROM Account
Child-to-Parent Relationship: Contact থেকে সম্পর্কিত Account রেকর্ড রিট্রাইভ করা:
SELECT LastName, Account.Name FROM Contact
Query Methods
SOQL কুয়েরি এক্সিকিউট করার জন্য Apex-এ কিছু কুয়েরি মেথড রয়েছে, যা সাধারণত SOQL স্টেটমেন্টের সাথে যুক্ত থাকে। এগুলো Salesforce ডেটাবেজে কুয়েরি চালাতে সাহায্য করে।
১. Database.query(queryString)
Database.query() মেথডটি একটি ডায়নামিক SOQL কুয়েরি চালানোর জন্য ব্যবহৃত হয়, যেখানে কুয়েরি স্ট্রিং আকারে প্রদান করা হয়। ডায়নামিক কুয়েরি ব্যবহার করে কুয়েরি স্ট্রিং পরিবর্তন করা যায় এবং নির্দিষ্ট শর্ত বা ভ্যারিয়েবলের উপর ভিত্তি করে কুয়েরি চালানো সম্ভব।
উদাহরণ:
String query = 'SELECT Name FROM Account WHERE Industry = \'Technology\'';
List<Account> accounts = Database.query(query);
for (Account acc : accounts) {
System.debug('Account Name: ' + acc.Name);
}
২. SOQL For Loop
SOQL For Loop ব্যবহার করে একাধিক রেকর্ড একবারে রিট্রাইভ করা এবং ইটেমগুলো লুপের মাধ্যমে প্রসেস করা যায়। এটি SOQL এর গভর্নর লিমিট মেনে বড় পরিমাণের ডেটা হ্যান্ডল করতে সাহায্য করে।
Syntax:
for (List<SObject> variable : [SOQL query]) {
// Process each batch of records
}
উদাহরণ:
for (List<Account> accountList : [SELECT Name FROM Account]) {
for (Account acc : accountList) {
System.debug('Account Name: ' + acc.Name);
}
}
৩. getQueryLocator(query)
getQueryLocator() মেথডটি ব্যাপক পরিমাণের ডেটা প্রসেস করার জন্য ব্যবহার করা হয়। এটি ব্যাচ প্রসেসিং এবং পেজিনেশনের জন্য কার্যকরী।
উদাহরণ:
Database.QueryLocator queryLocator = Database.getQueryLocator('SELECT Id, Name FROM Account');
৪. COUNT() ফাংশন
COUNT() ফাংশন ব্যবহার করে নির্দিষ্ট শর্তে মোট রেকর্ড সংখ্যা গণনা করা হয়।
উদাহরণ:
Integer accountCount = [SELECT COUNT() FROM Account WHERE Industry = 'Technology'];
System.debug('Total Technology Accounts: ' + accountCount);
৫. Aggregate Functions
SOQL-এ SUM(), AVG(), MIN(), MAX() ইত্যাদি অ্যাগ্রিগেট ফাংশন ব্যবহার করে গাণিতিক পরিসংখ্যান রিট্রাইভ করা যায়।
উদাহরণ:
AggregateResult[] results = [SELECT SUM(AnnualRevenue) FROM Account WHERE Industry = 'Technology'];
System.debug('Total Annual Revenue: ' + results[0].get('expr0'));
SOQL এবং Query Methods-এর Best Practices
- Selective SOQL Query লেখা: প্রয়োজনের অতিরিক্ত ফিল্ড রিট্রাইভ না করে নির্দিষ্ট ফিল্ডগুলো নির্বাচন করা।
- LIMIT ব্যবহার করা: গভর্নর লিমিট অতিক্রম না করার জন্য এবং অতিরিক্ত রেকর্ড রিট্রাইভ না করে
LIMITব্যবহার করা। - Bulkification নিশ্চিত করা: SOQL লুপের ভিতরে না রেখে বাইরের লুপে ব্যবহার করা, যাতে গভর্নর লিমিট অতিক্রম না হয়।
- Dynamic SOQL Query ব্যবহার: প্রয়োজনে
Database.query()ব্যবহার করে ডায়নামিক SOQL তৈরি করা। - Indexes ব্যবহার করা: যেসব ফিল্ডে প্রায়শই কুয়েরি চালানো হয়, সেখানে ইন্ডেক্সিং ব্যবহার করা।
সংক্ষেপে
- SOQL Syntax:
SELECT fields FROM Object WHERE condition ORDER BY field LIMIT number - Query Methods:
Database.query(),SOQL For Loop,getQueryLocator(),COUNT(), এবং অ্যাগ্রিগেট ফাংশন।
SOQL এবং Query Methods ব্যবহার করে Apex-এ Salesforce ডেটাবেজ থেকে বিভিন্ন ধরনের ডেটা রিট্রাইভ এবং প্রক্রিয়াকরণ করা যায়, যা ব্যবসায়িক প্রক্রিয়ায় অত্যন্ত সহায়ক।
Read more